import {useStore} from "@/store"
import axios from "axios";
const store = useStore()
const Api = axios.create({
    baseURL: window.baseURL,
    timeout: 5000,
})
Api.interceptors.request.use(config=>{
    config.headers.Authorization = store.getToken
    return config
},()=>{
    uni.hideLoading()
})
Api.interceptors.response.use(async res=>{
    await uni.hideLoading()
    const { data } = res
    if(data.code>209){
        store.setToken('')
        store.setCurData('')
        store.setUserInfo('')
        uni.redirectTo({
            url: '/pages/login/login'
        },1000)
        setTimeout(()=>{
            uni.showToast({
                title: data.msg,
                icon: 'none'
            })
        },1000)
    }
    else return data
},(err)=>{
    uni.hideLoading()
    store.setToken('')
    store.setCurData('')
    store.setUserInfo('')
    setTimeout(()=>{
        uni.showToast({
            title: '服务器异常...',
            icon: 'none'
        })
    }, 100)
    uni.redirectTo({ url: '/pages/login/login' })
    return err
})
/**
 * @param { Object } config
 * config 取值
 * 1.path  --接口地址 --String
 * 2.params 传递参数
 * 3.method: --请求方式 --String (默认GET)
 * 4.timeout --响应时间 --Number （默认5000）
 * 5.isload --loading --Boolean （默认开启）
 * 6.title --loading标题 --String
 * 7.headers --请求头，--（默认加上 authorization为token）
 * */
export const api = (config = {}) => {
    const token = store.getToken
    config = {
        method: "GET",
        timeout: 5000,
        isload: true,
        headers: {},
        title: "加载中...",
        ...config
    }
    if (config.isload) {
        uni.showLoading({
            title: config.title,
            mask: true
        })
    }
    return  Api({
        url: config.url??config.path,
        method: config.method,
        params: (config.method==='GET' || config.method==='get') ? config.params??config.query : {},
        data: config.data??config.body,
        headers: { Authorization: token, ...config.headers }
    })
}